home *** CD-ROM | disk | FTP | other *** search
- Listing 5:
-
-
- # compiled using hc29 -O -S fib.c
- _fib:
- sub gr1,gr1,16 # bring down register stack pointer
- asgeu V_SPILL,gr1,gr126 # test for spill
- cpgt gr96,lr6,2 # determine if n<2
- jmpt gr96,L00043
- add lr1,gr1,28 # stack support operation
- add gr1,gr1,16 # repair register stack for return
- const gr96,1 ; (0x1) # return value 1 when n<=2
- jmpi lr0 # return
- asleu V_FILL,lr1,gr127 # test for fill
- L00043:
- call lr0,_fib
- sub lr2,lr6,1 # place n-1 in lr2
- add lr3,gr96,0 # hold fib(n-1) in local
- call lr0,_fib
- sub lr2,lr6,2 # place n-2 in lr2
- add gr96,gr96,lr3 # add fib(n-2) and fib(n-1)
- add gr1,gr1,16 # repair register stack for return
- nop # wait 1-cycle for gr1 update
- jmpi lr0 # return
- asleu V_FILL,lr1,gr127 # test for fill
-
-
-